package com.cskaoyan._02method._01demo;

// 方法的定义和调用
/*
 * 1.什么是方法？
 * 就是特定的代码块。  比如计算圆的面积/计算圆的周长
 *
 * 方法的定义：
 * [权限修饰符] 返回值类型 方法名(形参列表){
 *  方法体
 *  }
 *
 * 2.什么是方法的重载？
 * 方法名相同，形参列表不同。
 *
 * 形参列表不同分为以下几种情况： 1.形参数目不同。 2.形参的类型不同。 3.形参的数目相同，类型相同，但是顺序不同。
 *
 * */



public class _01Define_01 {
    // 方法是程序中最小的执行单元

    // 1. 最简单的方法定义
    // 格式：
    // public static void 方法名(){
    //      方法体
    // }
    public static void playGame() {
        System.out.println("这里有好多方法体");
    }


    // 2. 带参数的方法定义
    // 格式：
    // 修饰符列表 返回值类型 方法名(形式参数列表)
    // 定义了一个方法。 int代表返回值，代表返回值类型是int。
    public static int test1(int a) {
        // 在这里，不能用a。
        System.out.println(a);

        // Missing return statement
        // 在方法中，怎么写返回值？
        return 1;
    }

    // 比如，现在要进行求和。
    public static int sum(int num1, int num2) {

        int sum = num1 + num2;

        // System.out.println(sum);

        return sum;
    }

    // 形参：形式参数，指方法定义中的参数
    // 实参：实际参数，方法调用中的参数

    // 比如，现在计算一个圆形的周长。
    // 计算圆周长   2 * Π * r
    public static void calculateCircumference(int radius) {
        // return 2 * 3.14 * radius;
        double circumference = 2 * 3.14 * radius;
        System.out.println(circumference);
    }


    // 3.带返回值的方法定义
    // 在调用处需要根据方法的结果去编写另外的代码，就需要定义带有返回值的方法
    // 格式：
    //  public static 返回值类型 方法名(参数){
    //     方法体；
    //     return 返回值；
    //  }

    public static int getSum(int num1, int num2, int num3, int num4) {
        int result = num1 + num2 + num3 + num4;
        return result;
    }


    public static void main(String[] args) {
        // 如何调用一个方法？

        // 1. 最简单的调用方法
        playGame();

        // 2. 带参数的方法调用
        // 直接用 方法名(传入参数) 就可以调用一个方法.
        // ctrl + p
        int sum = sum(10, 20);
        System.out.println(sum);

        int sum1 = sum(30, 60);
        System.out.println(sum1);

        // 计算周长
        calculateCircumference(10);

        // 3. 带返回值的方法调用
        int sums = getSum(10, 20, 30, 40);
        System.out.println(sums);

        // 或者输出调用
        System.out.println("全年营业额：" + getSum(10,20,30,40));

    }

}
